<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::recognition::ObjRecRANSAC类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-types">Protected 类型</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-static-methods">静态 Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#friends">友元</a> &#124;
<a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::recognition::ObjRecRANSAC类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>This is a RANSAC-based 3D object recognition method. Do the following to use it: (i) call <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e" title="Add an object model to be recognized.">addModel()</a> k times with k different models representing the objects to be recognized and (ii) call <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9ea4a26d7da22856211573917b07d47c" title="This method performs the recognition of the models loaded to the model library with the method addMod...">recognize()</a> with the 3D scene in which the objects should be recognized. Recognition means both object identification and pose (position + orientation) estimation. Check the method descriptions for more details.  
 <a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="ransac__based_2obj__rec__ransac_8h_source.html">obj_rec_ransac.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_hypothesis_creator.html">HypothesisCreator</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_oriented_point_pair.html">OrientedPointPair</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_output.html">Output</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is an output item of the <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9ea4a26d7da22856211573917b07d47c" title="This method performs the recognition of the models loaded to the model library with the method addMod...">ObjRecRANSAC::recognize()</a> method. It contains the recognized model, its name (the ones passed to <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e" title="Add an object model to be recognized.">ObjRecRANSAC::addModel()</a>), the rigid transform which aligns the model with the input scene and the match confidence which is a number in the interval (0, 1] which gives the fraction of the model surface area matched to the scene. E.g., a match confidence of 0.3 means that 30% of the object surface area was matched to the scene points. If the scene is represented by a single range image, the match confidence can not be greater than 0.5 since the range scanner sees only one side of each object.  <a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_output.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:aec14d32cf31d866d6dfa79ecb15779f8"><td class="memItemLeft" align="right" valign="top"><a id="aec14d32cf31d866d6dfa79ecb15779f8"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">ModelLibrary::PointCloudIn</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudIn</b></td></tr>
<tr class="separator:aec14d32cf31d866d6dfa79ecb15779f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a302ee3ce27b17a338801754bb82e418e"><td class="memItemLeft" align="right" valign="top"><a id="a302ee3ce27b17a338801754bb82e418e"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">ModelLibrary::PointCloudN</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudN</b></td></tr>
<tr class="separator:a302ee3ce27b17a338801754bb82e418e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dcce1d163f428f990c175b6f01b11eb"><td class="memItemLeft" align="right" valign="top"><a id="a6dcce1d163f428f990c175b6f01b11eb"></a>
typedef <a class="el" href="classpcl_1_1recognition_1_1_b_v_h.html">BVH</a>&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>BVHH</b></td></tr>
<tr class="separator:a6dcce1d163f428f990c175b6f01b11eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a6674f1dd189fea74287af601b72211"><td class="memItemLeft" align="right" valign="top"><a id="a8a6674f1dd189fea74287af601b72211"></a>
typedef <a class="el" href="classpcl_1_1recognition_1_1_simple_octree.html">SimpleOctree</a>&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a>, <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_hypothesis_creator.html">HypothesisCreator</a>, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>HypothesisOctree</b></td></tr>
<tr class="separator:a8a6674f1dd189fea74287af601b72211"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:ae1a4249f8278de41a34f74b950996986"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#ae1a4249f8278de41a34f74b950996986">ObjRecRANSAC</a> (float pair_width, float voxel_size)</td></tr>
<tr class="memdesc:ae1a4249f8278de41a34f74b950996986"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with some important parameters which can not be changed once an instance of that class is created.  <a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#ae1a4249f8278de41a34f74b950996986">更多...</a><br /></td></tr>
<tr class="separator:ae1a4249f8278de41a34f74b950996986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70615881d2c09ecf0d0d3b4c4c5bfb7f"><td class="memItemLeft" align="right" valign="top"><a id="a70615881d2c09ecf0d0d3b4c4c5bfb7f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a70615881d2c09ecf0d0d3b4c4c5bfb7f">clear</a> ()</td></tr>
<tr class="memdesc:a70615881d2c09ecf0d0d3b4c4c5bfb7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all models from the model library and releases some memory dynamically allocated by this instance. <br /></td></tr>
<tr class="separator:a70615881d2c09ecf0d0d3b4c4c5bfb7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9aa6b8506fbdd739ac1d25675f7053eb"><td class="memItemLeft" align="right" valign="top"><a id="a9aa6b8506fbdd739ac1d25675f7053eb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9aa6b8506fbdd739ac1d25675f7053eb">setMaxCoplanarityAngleDegrees</a> (float max_coplanarity_angle_degrees)</td></tr>
<tr class="memdesc:a9aa6b8506fbdd739ac1d25675f7053eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a threshold. The larger the value the more point pairs will be considered as co-planar and will be ignored in the off-line model pre-processing and in the online recognition phases. This makes sense only if "ignore co-planar points" is on. Call this method before calling addModel. This method calls the corresponding method of the model library. <br /></td></tr>
<tr class="separator:a9aa6b8506fbdd739ac1d25675f7053eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15c662193e9073d2b1f0ee5853f8acda"><td class="memItemLeft" align="right" valign="top"><a id="a15c662193e9073d2b1f0ee5853f8acda"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setSceneBoundsEnlargementFactor</b> (float value)</td></tr>
<tr class="separator:a15c662193e9073d2b1f0ee5853f8acda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9e4f37a6cd8ac28d03da749d7668b99"><td class="memItemLeft" align="right" valign="top"><a id="ad9e4f37a6cd8ac28d03da749d7668b99"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#ad9e4f37a6cd8ac28d03da749d7668b99">ignoreCoplanarPointPairsOn</a> ()</td></tr>
<tr class="memdesc:ad9e4f37a6cd8ac28d03da749d7668b99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default is on. This method calls the corresponding method of the model library. <br /></td></tr>
<tr class="separator:ad9e4f37a6cd8ac28d03da749d7668b99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b709f273c354740177ac81dcad159dc"><td class="memItemLeft" align="right" valign="top"><a id="a2b709f273c354740177ac81dcad159dc"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a2b709f273c354740177ac81dcad159dc">ignoreCoplanarPointPairsOff</a> ()</td></tr>
<tr class="memdesc:a2b709f273c354740177ac81dcad159dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default is on. This method calls the corresponding method of the model library. <br /></td></tr>
<tr class="separator:a2b709f273c354740177ac81dcad159dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fe6d8ff12f0b72537d0d1db9ab0d101"><td class="memItemLeft" align="right" valign="top"><a id="a9fe6d8ff12f0b72537d0d1db9ab0d101"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>icpHypothesesRefinementOn</b> ()</td></tr>
<tr class="separator:a9fe6d8ff12f0b72537d0d1db9ab0d101"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade9bb67054b738dc8d8b1b108d3c575a"><td class="memItemLeft" align="right" valign="top"><a id="ade9bb67054b738dc8d8b1b108d3c575a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>icpHypothesesRefinementOff</b> ()</td></tr>
<tr class="separator:ade9bb67054b738dc8d8b1b108d3c575a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b48737af6ab2551acdacdf54c280e5e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e">addModel</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudIn</a> &amp;points, const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudN</a> &amp;normals, const std::string &amp;object_name, void *user_data=NULL)</td></tr>
<tr class="memdesc:a8b48737af6ab2551acdacdf54c280e5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an object model to be recognized.  <a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e">更多...</a><br /></td></tr>
<tr class="separator:a8b48737af6ab2551acdacdf54c280e5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ea4a26d7da22856211573917b07d47c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9ea4a26d7da22856211573917b07d47c">recognize</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudIn</a> &amp;scene, const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudN</a> &amp;normals, std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_output.html">ObjRecRANSAC::Output</a> &gt; &amp;recognized_objects, double success_probability=0.99)</td></tr>
<tr class="memdesc:a9ea4a26d7da22856211573917b07d47c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method performs the recognition of the models loaded to the model library with the method <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e" title="Add an object model to be recognized.">addModel()</a>.  <a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9ea4a26d7da22856211573917b07d47c">更多...</a><br /></td></tr>
<tr class="separator:a9ea4a26d7da22856211573917b07d47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c6f85671df3ecc408909d7f335213"><td class="memItemLeft" align="right" valign="top"><a id="a436c6f85671df3ecc408909d7f335213"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>enterTestModeSampleOPP</b> ()</td></tr>
<tr class="separator:a436c6f85671df3ecc408909d7f335213"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac00293efd53372143b1501e2eb3def9d"><td class="memItemLeft" align="right" valign="top"><a id="ac00293efd53372143b1501e2eb3def9d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>enterTestModeTestHypotheses</b> ()</td></tr>
<tr class="separator:ac00293efd53372143b1501e2eb3def9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe92026059154015183057dbc3ec86b9"><td class="memItemLeft" align="right" valign="top"><a id="afe92026059154015183057dbc3ec86b9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>leaveTestMode</b> ()</td></tr>
<tr class="separator:afe92026059154015183057dbc3ec86b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78ca43f2523164b0121352ee40146b53"><td class="memItemLeft" align="right" valign="top"><a id="a78ca43f2523164b0121352ee40146b53"></a>
const std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_oriented_point_pair.html">ObjRecRANSAC::OrientedPointPair</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a78ca43f2523164b0121352ee40146b53">getSampledOrientedPointPairs</a> () const</td></tr>
<tr class="memdesc:a78ca43f2523164b0121352ee40146b53"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is useful for testing purposes. It returns the oriented point pairs which were sampled from the scene during the recognition process. Makes sense only if some of the testing modes are active. <br /></td></tr>
<tr class="separator:a78ca43f2523164b0121352ee40146b53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9be19751af8d03294763ebdbc68a6e3e"><td class="memItemLeft" align="right" valign="top"><a id="a9be19751af8d03294763ebdbc68a6e3e"></a>
const std::vector&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9be19751af8d03294763ebdbc68a6e3e">getAcceptedHypotheses</a> () const</td></tr>
<tr class="memdesc:a9be19751af8d03294763ebdbc68a6e3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is useful for testing purposes. It returns the accepted hypotheses generated during the recognition process. Makes sense only if some of the testing modes are active. <br /></td></tr>
<tr class="separator:a9be19751af8d03294763ebdbc68a6e3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a102f82070827aca45838613fb9fc8b12"><td class="memItemLeft" align="right" valign="top"><a id="a102f82070827aca45838613fb9fc8b12"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a102f82070827aca45838613fb9fc8b12">getAcceptedHypotheses</a> (std::vector&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> &gt; &amp;out) const</td></tr>
<tr class="memdesc:a102f82070827aca45838613fb9fc8b12"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is useful for testing purposes. It returns the accepted hypotheses generated during the recognition process. Makes sense only if some of the testing modes are active. <br /></td></tr>
<tr class="separator:a102f82070827aca45838613fb9fc8b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba5a8204aa6114ecd25670cc27c43bba"><td class="memItemLeft" align="right" valign="top"><a id="aba5a8204aa6114ecd25670cc27c43bba"></a>
const <a class="el" href="classpcl_1_1recognition_1_1_voxel_structure.html">pcl::recognition::ModelLibrary::HashTable</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#aba5a8204aa6114ecd25670cc27c43bba">getHashTable</a> () const</td></tr>
<tr class="memdesc:aba5a8204aa6114ecd25670cc27c43bba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the hash table in the model library. <br /></td></tr>
<tr class="separator:aba5a8204aa6114ecd25670cc27c43bba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48d9af843420f4ffc6970cfaf25e46e2"><td class="memItemLeft" align="right" valign="top"><a id="a48d9af843420f4ffc6970cfaf25e46e2"></a>
const <a class="el" href="classpcl_1_1recognition_1_1_model_library.html">ModelLibrary</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getModelLibrary</b> () const</td></tr>
<tr class="separator:a48d9af843420f4ffc6970cfaf25e46e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad168a2566a609dabdd5a2d3eb37c3995"><td class="memItemLeft" align="right" valign="top"><a id="ad168a2566a609dabdd5a2d3eb37c3995"></a>
const <a class="el" href="classpcl_1_1recognition_1_1_model_library_1_1_model.html">ModelLibrary::Model</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getModel</b> (const std::string &amp;name) const</td></tr>
<tr class="separator:ad168a2566a609dabdd5a2d3eb37c3995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab66dae0f74d588f84e26789d4c529a43"><td class="memItemLeft" align="right" valign="top"><a id="ab66dae0f74d588f84e26789d4c529a43"></a>
const <a class="el" href="classpcl_1_1recognition_1_1_o_r_r_octree.html">ORROctree</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getSceneOctree</b> () const</td></tr>
<tr class="separator:ab66dae0f74d588f84e26789d4c529a43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a5e5991546a0002f4ed97e593c1113e"><td class="memItemLeft" align="right" valign="top"><a id="a7a5e5991546a0002f4ed97e593c1113e"></a>
<a class="el" href="classpcl_1_1recognition_1_1_rigid_transform_space.html">RigidTransformSpace</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getRigidTransformSpace</b> ()</td></tr>
<tr class="separator:a7a5e5991546a0002f4ed97e593c1113e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643427b7245d26fd86fc81733a0a241a"><td class="memItemLeft" align="right" valign="top"><a id="a643427b7245d26fd86fc81733a0a241a"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>getPairWidth</b> () const</td></tr>
<tr class="separator:a643427b7245d26fd86fc81733a0a241a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected 类型</h2></td></tr>
<tr class="memitem:a9b23d3dd845c0d6a6d73511ee8ef7951"><td class="memItemLeft" align="right" valign="top"><a id="a9b23d3dd845c0d6a6d73511ee8ef7951"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>Recognition_Mode</b> { <b>SAMPLE_OPP</b>
, <b>TEST_HYPOTHESES</b>
, <b>FULL_RECOGNITION</b>
 }</td></tr>
<tr class="separator:a9b23d3dd845c0d6a6d73511ee8ef7951"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a92f928009a29c5cbe41fe24900ed3fee"><td class="memItemLeft" align="right" valign="top"><a id="a92f928009a29c5cbe41fe24900ed3fee"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>computeNumberOfIterations</b> (double success_probability) const</td></tr>
<tr class="separator:a92f928009a29c5cbe41fe24900ed3fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac26d0fb6c0499840f5816fc11ffe8b3a"><td class="memItemLeft" align="right" valign="top"><a id="ac26d0fb6c0499840f5816fc11ffe8b3a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>clearTestData</b> ()</td></tr>
<tr class="separator:ac26d0fb6c0499840f5816fc11ffe8b3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71e273d13a2488388ce4039f60e59db9"><td class="memItemLeft" align="right" valign="top"><a id="a71e273d13a2488388ce4039f60e59db9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sampleOrientedPointPairs</b> (int num_iterations, const std::vector&lt; <a class="el" href="classpcl_1_1recognition_1_1_o_r_r_octree_1_1_node.html">ORROctree::Node</a> * &gt; &amp;full_scene_leaves, std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_oriented_point_pair.html">OrientedPointPair</a> &gt; &amp;output) const</td></tr>
<tr class="separator:a71e273d13a2488388ce4039f60e59db9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac65f2060791a95b7cf421d5e015c8f35"><td class="memItemLeft" align="right" valign="top"><a id="ac65f2060791a95b7cf421d5e015c8f35"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>generateHypotheses</b> (const std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_oriented_point_pair.html">OrientedPointPair</a> &gt; &amp;pairs, std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis_base.html">HypothesisBase</a> &gt; &amp;out) const</td></tr>
<tr class="separator:ac65f2060791a95b7cf421d5e015c8f35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ca81e485704d73932f91374e60eaf44"><td class="memItemLeft" align="right" valign="top"><a id="a5ca81e485704d73932f91374e60eaf44"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a5ca81e485704d73932f91374e60eaf44">groupHypotheses</a> (std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis_base.html">HypothesisBase</a> &gt; &amp;hypotheses, int num_hypotheses, <a class="el" href="classpcl_1_1recognition_1_1_rigid_transform_space.html">RigidTransformSpace</a> &amp;transform_space, <a class="el" href="classpcl_1_1recognition_1_1_simple_octree.html">HypothesisOctree</a> &amp;grouped_hypotheses) const</td></tr>
<tr class="memdesc:a5ca81e485704d73932f91374e60eaf44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Groups close hypotheses in 'hypotheses'. Saves a representative for each group in 'out'. Returns the number of hypotheses after grouping. <br /></td></tr>
<tr class="separator:a5ca81e485704d73932f91374e60eaf44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa52d6580aa0120067f8c5d0c071a0d12"><td class="memItemLeft" align="right" valign="top"><a id="aa52d6580aa0120067f8c5d0c071a0d12"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>testHypothesis</b> (<a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> *hypothesis, int &amp;match, int &amp;penalty) const</td></tr>
<tr class="separator:aa52d6580aa0120067f8c5d0c071a0d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60429c7612435883bb9813759084d99b"><td class="memItemLeft" align="right" valign="top"><a id="a60429c7612435883bb9813759084d99b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>testHypothesisNormalBased</b> (<a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> *hypothesis, float &amp;match) const</td></tr>
<tr class="separator:a60429c7612435883bb9813759084d99b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d9b0706078a963c769086d99117c5de"><td class="memItemLeft" align="right" valign="top"><a id="a9d9b0706078a963c769086d99117c5de"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>buildGraphOfCloseHypotheses</b> (<a class="el" href="classpcl_1_1recognition_1_1_simple_octree.html">HypothesisOctree</a> &amp;hypotheses, <a class="el" href="classpcl_1_1recognition_1_1_o_r_r_graph.html">ORRGraph</a>&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> &gt; &amp;graph) const</td></tr>
<tr class="separator:a9d9b0706078a963c769086d99117c5de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a934c4ae109ec84ad3d405274839b084b"><td class="memItemLeft" align="right" valign="top"><a id="a934c4ae109ec84ad3d405274839b084b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>filterGraphOfCloseHypotheses</b> (<a class="el" href="classpcl_1_1recognition_1_1_o_r_r_graph.html">ORRGraph</a>&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> &gt; &amp;graph, std::vector&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> &gt; &amp;out) const</td></tr>
<tr class="separator:a934c4ae109ec84ad3d405274839b084b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada4243246e015368810199f715aec201"><td class="memItemLeft" align="right" valign="top"><a id="ada4243246e015368810199f715aec201"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>buildGraphOfConflictingHypotheses</b> (const <a class="el" href="classpcl_1_1recognition_1_1_b_v_h.html">BVHH</a> &amp;bvh, <a class="el" href="classpcl_1_1recognition_1_1_o_r_r_graph.html">ORRGraph</a>&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> * &gt; &amp;graph) const</td></tr>
<tr class="separator:ada4243246e015368810199f715aec201"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af15c3ec560949f2190257eb9551b92df"><td class="memItemLeft" align="right" valign="top"><a id="af15c3ec560949f2190257eb9551b92df"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>filterGraphOfConflictingHypotheses</b> (<a class="el" href="classpcl_1_1recognition_1_1_o_r_r_graph.html">ORRGraph</a>&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> * &gt; &amp;graph, std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_output.html">ObjRecRANSAC::Output</a> &gt; &amp;recognized_objects) const</td></tr>
<tr class="separator:af15c3ec560949f2190257eb9551b92df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba2f1dabfef03b560ae9e8c80f2ea9f1"><td class="memItemLeft" align="right" valign="top"><a id="aba2f1dabfef03b560ae9e8c80f2ea9f1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#aba2f1dabfef03b560ae9e8c80f2ea9f1">computeRigidTransform</a> (const float *a1, const float *a1_n, const float *b1, const float *b1_n, const float *a2, const float *a2_n, const float *b2, const float *b2_n, float *rigid_transform) const</td></tr>
<tr class="memdesc:aba2f1dabfef03b560ae9e8c80f2ea9f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the rigid transform that maps the line (a1, b1) to (a2, b2). The computation is based on the corresponding points 'a1' &lt;-&gt; 'a2' and 'b1' &lt;-&gt; 'b2' and the normals 'a1_n', 'b1_n', 'a2_n', and 'b2_n'. The result is saved in 'rigid_transform' which is an array of length 12. The first 9 elements are the rotational part (row major order) and the last 3 are the translation. <br /></td></tr>
<tr class="separator:aba2f1dabfef03b560ae9e8c80f2ea9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
静态 Protected 成员函数</h2></td></tr>
<tr class="memitem:a7ecbc126044353a48491ed488a87ca52"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a7ecbc126044353a48491ed488a87ca52">compute_oriented_point_pair_signature</a> (const float *p1, const float *n1, const float *p2, const float *n2, float signature[3])</td></tr>
<tr class="memdesc:a7ecbc126044353a48491ed488a87ca52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the signature of the oriented point pair ((p1, n1), (p2, n2)) consisting of the angles between  <a href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a7ecbc126044353a48491ed488a87ca52">更多...</a><br /></td></tr>
<tr class="separator:a7ecbc126044353a48491ed488a87ca52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:ab4991a97d2aed78cd382c13970b0a1e3"><td class="memItemLeft" align="right" valign="top"><a id="ab4991a97d2aed78cd382c13970b0a1e3"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>pair_width_</b></td></tr>
<tr class="separator:ab4991a97d2aed78cd382c13970b0a1e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9cd68be57087f62b3aaa51842a4be7a"><td class="memItemLeft" align="right" valign="top"><a id="ac9cd68be57087f62b3aaa51842a4be7a"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>voxel_size_</b></td></tr>
<tr class="separator:ac9cd68be57087f62b3aaa51842a4be7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae974150c62c887d18220e2e0fe777243"><td class="memItemLeft" align="right" valign="top"><a id="ae974150c62c887d18220e2e0fe777243"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>position_discretization_</b></td></tr>
<tr class="separator:ae974150c62c887d18220e2e0fe777243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfd17e43b5c68038a94910e10762a972"><td class="memItemLeft" align="right" valign="top"><a id="acfd17e43b5c68038a94910e10762a972"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>rotation_discretization_</b></td></tr>
<tr class="separator:acfd17e43b5c68038a94910e10762a972"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab52cbaf1ac1f011e44865bb3a6ed1019"><td class="memItemLeft" align="right" valign="top"><a id="ab52cbaf1ac1f011e44865bb3a6ed1019"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>abs_zdist_thresh_</b></td></tr>
<tr class="separator:ab52cbaf1ac1f011e44865bb3a6ed1019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5a9c838ccc2c8f3afe0737a3a3a3c1e"><td class="memItemLeft" align="right" valign="top"><a id="ad5a9c838ccc2c8f3afe0737a3a3a3c1e"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>relative_obj_size_</b></td></tr>
<tr class="separator:ad5a9c838ccc2c8f3afe0737a3a3a3c1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9baafcf19196bbc572f46cc46e2c386e"><td class="memItemLeft" align="right" valign="top"><a id="a9baafcf19196bbc572f46cc46e2c386e"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>visibility_</b></td></tr>
<tr class="separator:a9baafcf19196bbc572f46cc46e2c386e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa80acc73291b643612ec6f8f442ca29c"><td class="memItemLeft" align="right" valign="top"><a id="aa80acc73291b643612ec6f8f442ca29c"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>relative_num_of_illegal_pts_</b></td></tr>
<tr class="separator:aa80acc73291b643612ec6f8f442ca29c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80ba7457404ee78270bf7dd60c6d1027"><td class="memItemLeft" align="right" valign="top"><a id="a80ba7457404ee78270bf7dd60c6d1027"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>intersection_fraction_</b></td></tr>
<tr class="separator:a80ba7457404ee78270bf7dd60c6d1027"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab14b2bc4cf761fd45e6554a1c0d2e5f1"><td class="memItemLeft" align="right" valign="top"><a id="ab14b2bc4cf761fd45e6554a1c0d2e5f1"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>max_coplanarity_angle_</b></td></tr>
<tr class="separator:ab14b2bc4cf761fd45e6554a1c0d2e5f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a311fa3b2a2e3eadb325b85d0a7a7ff93"><td class="memItemLeft" align="right" valign="top"><a id="a311fa3b2a2e3eadb325b85d0a7a7ff93"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>scene_bounds_enlargement_factor_</b></td></tr>
<tr class="separator:a311fa3b2a2e3eadb325b85d0a7a7ff93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d8c1bf31468af788aa6c8751826fae6"><td class="memItemLeft" align="right" valign="top"><a id="a0d8c1bf31468af788aa6c8751826fae6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>ignore_coplanar_opps_</b></td></tr>
<tr class="separator:a0d8c1bf31468af788aa6c8751826fae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab89cf98cf43ff8758d3052dae7e2cdde"><td class="memItemLeft" align="right" valign="top"><a id="ab89cf98cf43ff8758d3052dae7e2cdde"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>frac_of_points_for_icp_refinement_</b></td></tr>
<tr class="separator:ab89cf98cf43ff8758d3052dae7e2cdde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09dd93a8cb65eb4d072b1bb0c4d540ad"><td class="memItemLeft" align="right" valign="top"><a id="a09dd93a8cb65eb4d072b1bb0c4d540ad"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>do_icp_hypotheses_refinement_</b></td></tr>
<tr class="separator:a09dd93a8cb65eb4d072b1bb0c4d540ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9088b0827e31b2be2866535c6845f6b3"><td class="memItemLeft" align="right" valign="top"><a id="a9088b0827e31b2be2866535c6845f6b3"></a>
<a class="el" href="classpcl_1_1recognition_1_1_model_library.html">ModelLibrary</a>&#160;</td><td class="memItemRight" valign="bottom"><b>model_library_</b></td></tr>
<tr class="separator:a9088b0827e31b2be2866535c6845f6b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b80d569ebf918d67dddf0b8d6a70699"><td class="memItemLeft" align="right" valign="top"><a id="a1b80d569ebf918d67dddf0b8d6a70699"></a>
<a class="el" href="classpcl_1_1recognition_1_1_o_r_r_octree.html">ORROctree</a>&#160;</td><td class="memItemRight" valign="bottom"><b>scene_octree_</b></td></tr>
<tr class="separator:a1b80d569ebf918d67dddf0b8d6a70699"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3ab311e6d9e1b22be2dd85fc96aa7bc"><td class="memItemLeft" align="right" valign="top"><a id="ac3ab311e6d9e1b22be2dd85fc96aa7bc"></a>
<a class="el" href="classpcl_1_1recognition_1_1_o_r_r_octree_z_projection.html">ORROctreeZProjection</a>&#160;</td><td class="memItemRight" valign="bottom"><b>scene_octree_proj_</b></td></tr>
<tr class="separator:ac3ab311e6d9e1b22be2dd85fc96aa7bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a353a09f53c4b2d9d30b30dc8bec18a1b"><td class="memItemLeft" align="right" valign="top"><a id="a353a09f53c4b2d9d30b30dc8bec18a1b"></a>
<a class="el" href="classpcl_1_1recognition_1_1_rigid_transform_space.html">RigidTransformSpace</a>&#160;</td><td class="memItemRight" valign="bottom"><b>transform_space_</b></td></tr>
<tr class="separator:a353a09f53c4b2d9d30b30dc8bec18a1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4e5090000957f4b577305a8cf64a28c"><td class="memItemLeft" align="right" valign="top"><a id="ab4e5090000957f4b577305a8cf64a28c"></a>
<a class="el" href="classpcl_1_1recognition_1_1_trimmed_i_c_p.html">TrimmedICP</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a>, float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>trimmed_icp_</b></td></tr>
<tr class="separator:ab4e5090000957f4b577305a8cf64a28c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77bd4d1777ede948f555eeb08aa54ffe"><td class="memItemLeft" align="right" valign="top"><a id="a77bd4d1777ede948f555eeb08aa54ffe"></a>
PointCloudIn::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>scene_octree_points_</b></td></tr>
<tr class="separator:a77bd4d1777ede948f555eeb08aa54ffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a779fa3cc424470e16dd97b7d3683a27e"><td class="memItemLeft" align="right" valign="top"><a id="a779fa3cc424470e16dd97b7d3683a27e"></a>
std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_oriented_point_pair.html">OrientedPointPair</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>sampled_oriented_point_pairs_</b></td></tr>
<tr class="separator:a779fa3cc424470e16dd97b7d3683a27e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ff32f398746bda56adbfca7b3818971"><td class="memItemLeft" align="right" valign="top"><a id="a7ff32f398746bda56adbfca7b3818971"></a>
std::vector&lt; <a class="el" href="classpcl_1_1recognition_1_1_hypothesis.html">Hypothesis</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>accepted_hypotheses_</b></td></tr>
<tr class="separator:a7ff32f398746bda56adbfca7b3818971"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae33a8413ac80e2b77a17d8ae8f28ef65"><td class="memItemLeft" align="right" valign="top"><a id="ae33a8413ac80e2b77a17d8ae8f28ef65"></a>
Recognition_Mode&#160;</td><td class="memItemRight" valign="bottom"><b>rec_mode_</b></td></tr>
<tr class="separator:ae33a8413ac80e2b77a17d8ae8f28ef65"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
<tr class="memitem:a4edb28637de39d49c5a062f78e47609f"><td class="memItemLeft" align="right" valign="top"><a id="a4edb28637de39d49c5a062f78e47609f"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>ModelLibrary</b></td></tr>
<tr class="separator:a4edb28637de39d49c5a062f78e47609f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>This is a RANSAC-based 3D object recognition method. Do the following to use it: (i) call <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e" title="Add an object model to be recognized.">addModel()</a> k times with k different models representing the objects to be recognized and (ii) call <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a9ea4a26d7da22856211573917b07d47c" title="This method performs the recognition of the models loaded to the model library with the method addMod...">recognize()</a> with the 3D scene in which the objects should be recognized. Recognition means both object identification and pose (position + orientation) estimation. Check the method descriptions for more details. </p>
<dl class="section note"><dt>注解</dt><dd>If you use this code in any academic work, please cite:</dd></dl>
<ul>
<li>Chavdar Papazov, Sami Haddadin, Sven Parusel, Kai Krieger and Darius Burschka. Rigid 3D geometry matching for grasping of known objects in cluttered scenes. The International Journal of Robotics Research 2012. DOI: 10.1177/0278364911436019</li>
<li>Chavdar Papazov and Darius Burschka. An Efficient RANSAC for 3D <a class="el" href="class_object.html">Object</a> Recognition in Noisy and Occluded Scenes. In Proceedings of the 10th Asian Conference on Computer Vision (ACCV'10), November 2010.</li>
</ul>
<dl class="section author"><dt>作者</dt><dd>Chavdar Papazov </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="ae1a4249f8278de41a34f74b950996986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1a4249f8278de41a34f74b950996986">&#9670;&nbsp;</a></span>ObjRecRANSAC()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">pcl::recognition::ObjRecRANSAC::ObjRecRANSAC </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>pair_width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>voxel_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor with some important parameters which can not be changed once an instance of that class is created. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pair_width</td><td>should be roughly half the extent of the visible object part. This means, for each object point p there should be (at least) one point q (from the same object) such that ||p - q|| &lt;= pair_width. Tradeoff: smaller values allow for detection in more occluded scenes but lead to more imprecise alignment. Bigger values lead to better alignment but require large visible object parts (i.e., less occlusion).</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">voxel_size</td><td>is the size of the leafs of the octree, i.e., the "size" of the discretization. Tradeoff: High values lead to less computation time but ignore object details. Small values allow to better distinguish between objects, but will introduce more holes in the resulting "voxel-surface" (especially for a sparsely sampled scene). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a8b48737af6ab2551acdacdf54c280e5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b48737af6ab2551acdacdf54c280e5e">&#9670;&nbsp;</a></span>addModel()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::recognition::ObjRecRANSAC::addModel </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudIn</a> &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudN</a> &amp;&#160;</td>
          <td class="paramname"><em>normals</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>object_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>user_data</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add an object model to be recognized. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">points</td><td>are the object points. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>at each point. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">object_name</td><td>is an identifier for the object. If that object is detected in the scene 'object_name' is returned by the recognition method and you know which object has been detected. Note that 'object_name' has to be unique! </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">user_data</td><td>is a pointer to some data (can be NULL)</td></tr>
  </table>
  </dd>
</dl>
<p>The method returns true if the model was successfully added to the model library and false otherwise (e.g., if 'object_name' is already in use). </p>
<div class="fragment"><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        {</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;          <span class="keywordflow">return</span> (model_library_.<a class="code" href="classpcl_1_1recognition_1_1_model_library.html#ab353079625ae227317aae965fb1d6879">addModel</a> (points, normals, object_name, frac_of_points_for_icp_refinement_, user_data));</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1recognition_1_1_model_library_html_ab353079625ae227317aae965fb1d6879"><div class="ttname"><a href="classpcl_1_1recognition_1_1_model_library.html#ab353079625ae227317aae965fb1d6879">pcl::recognition::ModelLibrary::addModel</a></div><div class="ttdeci">bool addModel(const PointCloudIn &amp;points, const PointCloudN &amp;normals, const std::string &amp;object_name, float frac_of_points_for_registration, void *user_data=NULL)</div><div class="ttdoc">Adds a model to the hash table.</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7ecbc126044353a48491ed488a87ca52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ecbc126044353a48491ed488a87ca52">&#9670;&nbsp;</a></span>compute_oriented_point_pair_signature()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void pcl::recognition::ObjRecRANSAC::compute_oriented_point_pair_signature </td>
          <td>(</td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>n1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>n2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>signature</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Computes the signature of the oriented point pair ((p1, n1), (p2, n2)) consisting of the angles between </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">p1</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">n1</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">p2</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">n2</td><td></td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">signature</td><td>is an array of three doubles saving the three angles in the order shown above. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        {</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;          <span class="comment">// Get the line from p1 to p2</span></div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;          <span class="keywordtype">float</span> cl[3] = {p2[0] - p1[0], p2[1] - p1[1], p2[2] - p1[2]};</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;          aux::normalize3 (cl);</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160; </div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;          signature[0] = std::acos (aux::clamp (aux::dot3 (n1,cl), -1.0f, 1.0f)); cl[0] = -cl[0]; cl[1] = -cl[1]; cl[2] = -cl[2];</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;          signature[1] = std::acos (aux::clamp (aux::dot3 (n2,cl), -1.0f, 1.0f));</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;          signature[2] = std::acos (aux::clamp (aux::dot3 (n1,n2), -1.0f, 1.0f));</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a9ea4a26d7da22856211573917b07d47c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ea4a26d7da22856211573917b07d47c">&#9670;&nbsp;</a></span>recognize()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::recognition::ObjRecRANSAC::recognize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudIn</a> &amp;&#160;</td>
          <td class="paramname"><em>scene</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudN</a> &amp;&#160;</td>
          <td class="paramname"><em>normals</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::list&lt; <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_output.html">ObjRecRANSAC::Output</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>recognized_objects</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>success_probability</em> = <code>0.99</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method performs the recognition of the models loaded to the model library with the method <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html#a8b48737af6ab2551acdacdf54c280e5e" title="Add an object model to be recognized.">addModel()</a>. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">scene</td><td>is the 3d scene in which the object should be recognized. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>are the scene normals. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">recognized_objects</td><td>is the list of output items each one containing the recognized model instance, its name, the aligning rigid transform and the match confidence (see <a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c_1_1_output.html" title="This is an output item of the ObjRecRANSAC::recognize() method. It contains the recognized model,...">ObjRecRANSAC::Output</a> for further explanations). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">success_probability</td><td>is the user-defined probability of detecting all objects in the scene. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>recognition/include/pcl/recognition/ransac_based/<a class="el" href="ransac__based_2obj__rec__ransac_8h_source.html">obj_rec_ransac.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>recognition</b></li><li class="navelem"><a class="el" href="classpcl_1_1recognition_1_1_obj_rec_r_a_n_s_a_c.html">ObjRecRANSAC</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
